/**
  ******************************************************************************
  * @author     Chris
  * @since      2024/6/11 12:34
  *
  * @file       pd_timer_it.h
  * @brief      Header file of TimerIT peripheral driver.
  *
  * @note       This file contains the TimerIT object declaration.
  *
  * @warning    None.
  ******************************************************************************
  * Change Logs:
  *   Date          Author       Notes
  *   2024/6/11     Chris        the first version
  *
  ******************************************************************************
  */

#ifndef JLC_SKY_TIMER_IT_H
#define JLC_SKY_TIMER_IT_H

#include "pd_timer.h"
#include "drivers.h"

typedef struct TimerITDef TimerIT;

struct TimerITDef {
    Timer *timer;

    void (*init)(TimerIT *this, IRQn_Type irQnType, uint32_t PreemptPriority, uint32_t SubPriority);
};

extern const struct TimerITClass {
    TimerIT *(*build)(Timer *timer);
} TimerITBuilder;

#endif //JLC_SKY_TIMER_IT_H
